package com.zenithmind.chat.pojo.dto;

import lombok.Data;

import jakarta.validation.constraints.*;
import java.util.List;

/**
 * 聊天消息DTO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
public class ChatMessageDTO {

    /**
     * 群组ID
     */
    @NotBlank(message = "群组ID不能为空")
    private String groupId;

    /**
     * 消息类型（1-文本，2-图片，3-文件，4-语音，5-视频，6-系统消息，7-表情，8-链接）
     */
    @NotNull(message = "消息类型不能为空")
    @Min(value = 1, message = "消息类型值无效")
    @Max(value = 8, message = "消息类型值无效")
    private Integer messageType;

    /**
     * 消息内容
     */
    @Size(max = 5000, message = "消息内容长度不能超过5000个字符")
    private String content;

    /**
     * 媒体文件URL（图片、文件、语音、视频等）
     */
    private String mediaUrl;

    /**
     * 媒体文件大小（字节）
     */
    private Long mediaSize;

    /**
     * 媒体文件时长（秒，语音、视频使用）
     */
    private Integer mediaDuration;

    /**
     * 缩略图URL
     */
    private String thumbnailUrl;

    /**
     * 回复的消息ID
     */
    private String replyToId;

    /**
     * @提及的用户ID列表
     */
    private List<String> mentionUsers;

    /**
     * 是否@全体成员（0-否，1-是）
     */
    private Integer mentionAll;

    /**
     * 客户端消息ID（用于去重）
     */
    private String clientMsgId;

    /**
     * 扩展信息
     */
    private Object extraInfo;
}
